{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Recall and Precision Diagnostic Example"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "import seaborn as sns\n",
    "\n",
    "from IPython.core.pylabtools import figsize\n",
    "\n",
    "figsize(10, 8)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Confusion Matrix Numbers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "results = pd.DataFrame({'threshold': [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0],\n",
    "                        'tp': [50, 48, 47, 45, 44, 42, 36,  30,  20, 12, 0],\n",
    "                        'fp': [50, 47, 40, 31, 23, 16, 12,  11,   4,  3,  0],\n",
    "                        'tn': [0,   3,  9, 16, 22, 29, 34,  38,  43, 45, 50],\n",
    "                        'fn': [0,   2,  4,  8, 11, 13, 18,  21,  33, 40, 50]\n",
    "                       })"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Calculate Precision, Recall, F1, TPR, FPR"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "def calculate_metrics(results):\n",
    "    roc = pd.DataFrame(index = results['threshold'], columns=['recall', 'precision', 'f1', 'tpr', 'fpr'])\n",
    "    \n",
    "    for i in results.iterrows():\n",
    "        fn, fp, t, tn, tp = i[1]\n",
    "        assert tp + fp + tn + fn == 100, 'Patients must add up to 100'\n",
    "        \n",
    "        recall = tp / (tp + fn)\n",
    "        \n",
    "        if tp == fp == 0:\n",
    "            precision = 0\n",
    "            true_positive_rate = 0\n",
    "        \n",
    "        else:\n",
    "            precision = tp / (tp + fp)\n",
    "            true_positive_rate = tp / (tp + fn)\n",
    "            \n",
    "        if precision == recall == 0:\n",
    "            f1 = 0\n",
    "        else:\n",
    "            f1 = 2 * (precision * recall) / (precision + recall)\n",
    "        \n",
    "        \n",
    "        false_positive_rate = fp / (fp + tn)\n",
    "        \n",
    "        roc.ix[t, 'recall'] = recall\n",
    "        roc.ix[t, 'precision'] = precision\n",
    "        roc.ix[t, 'f1'] = f1\n",
    "        roc.ix[t, 'tpr'] = true_positive_rate\n",
    "        roc.ix[t, 'fpr'] = false_positive_rate\n",
    "    \n",
    "    return roc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>threshold</th>\n",
       "      <th>recall</th>\n",
       "      <th>precision</th>\n",
       "      <th>f1</th>\n",
       "      <th>tpr</th>\n",
       "      <th>fpr</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.5</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.1</td>\n",
       "      <td>0.96</td>\n",
       "      <td>0.505263</td>\n",
       "      <td>0.662069</td>\n",
       "      <td>0.96</td>\n",
       "      <td>0.94</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.2</td>\n",
       "      <td>0.921569</td>\n",
       "      <td>0.54023</td>\n",
       "      <td>0.681159</td>\n",
       "      <td>0.921569</td>\n",
       "      <td>0.816327</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.3</td>\n",
       "      <td>0.849057</td>\n",
       "      <td>0.592105</td>\n",
       "      <td>0.697674</td>\n",
       "      <td>0.849057</td>\n",
       "      <td>0.659574</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.4</td>\n",
       "      <td>0.8</td>\n",
       "      <td>0.656716</td>\n",
       "      <td>0.721311</td>\n",
       "      <td>0.8</td>\n",
       "      <td>0.511111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.5</td>\n",
       "      <td>0.763636</td>\n",
       "      <td>0.724138</td>\n",
       "      <td>0.743363</td>\n",
       "      <td>0.763636</td>\n",
       "      <td>0.355556</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0.6</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.75</td>\n",
       "      <td>0.705882</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.26087</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0.7</td>\n",
       "      <td>0.588235</td>\n",
       "      <td>0.731707</td>\n",
       "      <td>0.652174</td>\n",
       "      <td>0.588235</td>\n",
       "      <td>0.22449</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>0.8</td>\n",
       "      <td>0.377358</td>\n",
       "      <td>0.833333</td>\n",
       "      <td>0.519481</td>\n",
       "      <td>0.377358</td>\n",
       "      <td>0.0851064</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0.9</td>\n",
       "      <td>0.230769</td>\n",
       "      <td>0.8</td>\n",
       "      <td>0.358209</td>\n",
       "      <td>0.230769</td>\n",
       "      <td>0.0625</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    threshold    recall precision        f1       tpr        fpr\n",
       "0         0.0         1       0.5  0.666667         1          1\n",
       "1         0.1      0.96  0.505263  0.662069      0.96       0.94\n",
       "2         0.2  0.921569   0.54023  0.681159  0.921569   0.816327\n",
       "3         0.3  0.849057  0.592105  0.697674  0.849057   0.659574\n",
       "4         0.4       0.8  0.656716  0.721311       0.8   0.511111\n",
       "5         0.5  0.763636  0.724138  0.743363  0.763636   0.355556\n",
       "6         0.6  0.666667      0.75  0.705882  0.666667    0.26087\n",
       "7         0.7  0.588235  0.731707  0.652174  0.588235    0.22449\n",
       "8         0.8  0.377358  0.833333  0.519481  0.377358  0.0851064\n",
       "9         0.9  0.230769       0.8  0.358209  0.230769     0.0625\n",
       "10        1.0         0         0         0         0          0"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "roc = calculate_metrics(results)\n",
    "roc.reset_index()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Receiver Operating Characteristic Curve"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x16ccfc03c88>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "figsize(10, 8)\n",
    "plt.style.use('seaborn-dark-palette')\n",
    "thresholds = [str(t) for t in results['threshold']]\n",
    "plt.plot(roc['fpr'], roc['tpr'], 'bo-', label = 'model');\n",
    "plt.plot(list(np.linspace(0, 1, num = 10)), list(np.linspace(0, 1, num = 10)), 'ro--', label = 'naive classifier');\n",
    "for x, y, s in zip(roc['fpr'], roc['tpr'], thresholds):\n",
    "    plt.text(x - 0.04,y + 0.02, s, fontdict={'size': 14});\n",
    "\n",
    "plt.legend(prop={'size':14})\n",
    "plt.ylabel('True Positive Rate', size = 16); plt.xlabel('False Positive Rate', size = 16);\n",
    "plt.title('Receiver Operating Characteristic Curve', size = 20);"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
